//封装 axios 的获取
/*
1. 封装了 baseURL 根路径 网址
2. 封装了 获取数据的过期时间
3. 封装了 请求拦截和响应
4. 封装了 数据获取到之前的旋转小图标
5. 数据如果没有获取到的报错信息
*/
//引入vue
import Vue from "vue";

//1. 引入axios
import axios from 'axios';
import store from '@/store';

console.log(process.env.VUE_APP_API_URL);
//引入报错的全局方法
import {Loading, Message} from 'element-ui';

const service = axios.create({
    baseURL:process.env.VUE_APP_API_URL,
    timeout:10000
})

//创建 保存 旋转小图标的变量
var loadObj = null;

//请求拦截
service.interceptors.request.use(
    config=>{
        if(!loadObj){
            loadObj = Loading.service({
                lock:true,
                target:"#loading",
                text:window.vm.$t("lang.loading"),
                spinner:"el-icon-loading",
                background:"rgba(0,0,0,0.5)"
            })
        }
        //假设有 token ， 需要设置 token令牌
        config.headers['user-token'] = store.getters.token;
        return config;
    },
    error=>{
        //表示错误返回
        return Promise.reject(error);
    });

//响应拦截
service.interceptors.response.use(
    response=>{
            Vue.nextTick(()=>{
                loadObj.close();
            })
       
        if(response.data.code == 666){
            return response;
        }else{
            Message({
                message:response.data.msg,
                type:"error"
            })
            return Promise.reject(response.data.msg);
        }
    },
    error=>{
        Vue.nextTick(()=>{
            loadObj.close();
        })
        Message({
            message:error,
            type:"error"
        })
        //对响应错误做些什么
        return Promise.reject(error);
    });

//输出
export default service;
